/*
 * @Description: 
 * @Author: Junhuang
 * @Date: 2022-02-08 11:54:05
 * @LastEditTime: 2022-03-11 11:24:27
 * @LastEditors: Junhuang
 * @Reference: context扩展页面
 */

module.exports = {
  //成功提示
  apiSuccesss(data = null, msg = 'ok', code = 200) {
    // this 就是 ctx 对象，在其中可以调用 ctx 上的其他方法，或访问属性
    this.body = { msg, data };
    this.status = code;
  },

  //失败提示
  apiFail(data = null, msg = 'fail', code = 400) {
    // this 就是 ctx 对象，在其中可以调用 ctx 上的其他方法，或访问属性
    this.body = { msg, data };
    this.status = code;
  },

  /**
   * @description: 获取token, 通过jwt进行加密
   * @param {Object} user 用户对象
   * @return {String} 
   */
  getToken(user) {
    return this.app.jwt.sign(user, this.app.config.jwt.secret);
  },

  //第一种，使用while循环; delay:毫秒
  sleep(delay) {
    var start = (new Date()).getTime();
    while ((new Date()).getTime() - start < delay) {
      continue;
    }
  },

  /**
   * @description: 验证用户token是否有效（正确且不过期）
   * @param {String} token
   * * @return {Boolean}
   */
  checkToken(token) {
    try {

    } catch (err) {

    }
  },

  async page(model, where = {}, options = {}) {
    let page = this.params.page ? parseInt(this.params.page) : 1;
    let limit = 10;
    if (this.query.limit) {
      limit = parseInt(this.query.limit);
    }
    if (this.myquery && this.myquery.limit) {
      limit = parseInt(this.myquery.limit);
    }
    let offset = (page - 1) * limit;

    if (!options.order) {
      options.order = [['id', 'DESC']];
    }

    return await model.findAll({
      where,
      offset,
      limit,
      ...options,
    });
  }
};